2011 年 11 月
作者:Duncan Hardie
本文将帮助您熟悉 Oracle Solaris 11 中 Oracle Solaris 区域配置和管理的基本操作。
|
在 Oracle Solaris 10 中,Oracle Solaris 区域技术允许您创建不同的隔离环境以满足特定应用程序的需要,所有环境都在同一 Oracle Solaris 实例上。您不必运行和管理多个操作系统在多个系统上托管多个应用程序,只需运行和管理一个操作系统并将每个应用程序放在一个区域中。因此您不必将时间和资源花在管理多个操作系统上,只需管理多个区域。这样简单得多。
Oracle Solaris 11 将 Oracle Solaris 区域技术置于其核心,将 Oracle Solaris 区域与关键 Oracle Solaris 11 特性相集成。例如,与新的软件管理架构紧密集成简化了 Oracle Solaris 11 和 Oracle Solaris 区域的部署。
Oracle Solaris 区域使您可以将一个应用程序与同一操作系统上的其他应用程序隔离开来,从而允许您创建一个隔离环境,用户可登录该环境并从 Oracle Solaris 区域内部执行所需的操作,而不影响该区域外部的任何程序。此外,Oracle Solaris 区域还可以不受外部攻击和内部恶意程序的影响。每个 Oracle Solaris 区域都包含一个完整的资源受控环境,允许您分配 CPU、内存、网络和存储等资源。
如果您是系统管理员,可以选择严格管理所有 Oracle Solaris 区域,也可以将权限分配给特定 Oracle Solaris 区域的其他管理员。这种灵活性允许您对整个计算环境进行量身定制以满足特定应用程序的需要,全部在同一操作系统内实现。
在本方法指南中,我们将建立三个 Oracle Solaris 区域,一个用于为开发人员托管测试环境 (testzone
),两个用于托管面向 Web 的应用程序(webzone-1
和 webzone-2
),这三个区域并存在一个系统上。
每个区域将突出区域的一个简单特性以便于您了解区域:
testzone
,我们将了解如何使用命令行创建区域。webzone-1
,我们将了解如何向区域添加应用程序。webzone-2
,我们将了解如何克隆区域。测试区域将受益于 Oracle Solaris 区域技术的隔离功能。您可以快速创建区域,然后将其移交给开发组。该组的管理员可以独立管理环境,测试工程师可以自由安装他们需要的程序包,所有这些都与系统的其余部分隔离。我们还将看到 Oracle Solaris 11 中的映像包系统 (IPS) 如何使 Oracle Solaris 区域变得非常精简,从而使系统资源用于应用程序而非虚拟化技术。
第一个 Web 区域 webzone-1
将用于安装运行在线销售点 (POS) Web 服务器的 Web 环境。在此,可以通过分配适当的资源保证服务水平来确保完成交易。Oracle Solaris 区域技术使您不仅能够控制 CPU 和内存,而且还能控制网络带宽和对存储的访问。这是通过与其余 Oracle Solaris 11 核心特性(如网络虚拟化和基于 ZFS 的存储)紧密集成来实现的。
第二个 Web 区域 webzone-2
是为应对 POS 环境的需求高峰而创建的。需要尽快增加一个 Web 服务器来应对增加的流量。我们将使用 Oracle Solaris 区域中提供的克隆特性来完成这一添加。该特性是业内的一个常用技术,创建一个金版(即模板)并基于原件生成新环境。我们将看到使用 Oracle Solaris 区域技术,这一过程的速度是多么惊人,我们还将看到我们能节省多少磁盘空间。这种克隆过程可用于根据需要快速生成多个重复的环境,又快又轻松,它在云环境中可能有巨大用途。
按照本文中的步骤进行操作之后,将配置好三个区域环境,如图 1 所示。每个区域将其文件系统置于 /zones
ZFS 数据集上,并将拥有通过物理数据链路(网络端口 e1000g0
)的专用网络连接。Web 区域还将包含 Apache Web 服务器应用程序。
图 1. 文件系统都位于 /zones
上且访问一个网络端口的三个区域
注:“全局区域”指的是系统的默认区域,也用于系统范围的管理控制。
了解了我们要尝试的目标之后,下面介绍实现该目标的步骤。
图 2 显示将使用的设置。
图 2. 三个区域及配置细节
testzone
本文重点介绍快速启动和运行 Oracle Solaris 区域实例所需的任务。有关创建 Oracle Solaris 区域涉及的所有步骤以及如何配置其属性的完整讨论,请参见 Oracle Solaris 管理:Oracle Solaris 区域、Oracle Solaris 10 区域和资源管理。
检查 ZFS 文件系统和网络的状态:
root@global:~# zfs list | grep zones root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown --
我们注意到,没有与任何区域相关的 ZFS 数据集,也没有虚拟 NIC 设备。
首先使用命令行创建一个简单的测试区域,如清单 1 所示。
清单 1:创建区域root@global:~# zonecfg -z testzone testzone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:testzone> create create: Using system default template 'SYSdefault' zonecfg:testzone> set zonepath=/zones/testzone zonecfg:testzone> set autoboot=true zonecfg:testzone> set bootargs="-m verbose" zonecfg:testzone> verify zonecfg:testzone> commit zonecfg:testzone> exit
如果在此阶段收到任何配置错误消息,请参见 Oracle Solaris 管理:Oracle Solaris 区域、Oracle Solaris 10 区域和资源管理。
提示:如果 zonepath 中包括区域的名称,跟踪区域文件就会轻松得多。
在本例中,我们将区域命名为 testzone
并选择 /zones/testzone
作为该区域的安装位置。而且,该区域在引导时将自动以详细方式启动。这样做,我们就不必在系统重新启动后手动启动区域,并且还会看到所有服务均启动。
默认情况下,所有 Oracle Solaris 区域均配置有一个名为 anet
的自动 VNIC,它会自动为我们提供一个网络设备。(稍后再详细讨论此网络设备的配置。)我们现在还看不到这个网络设备,因为它是在区域引导时自动创建的,并且在区域关闭时自动删除。这可以使用 dladm
命令来检查:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown --
可以使用 zoneadm
命令验证该区域现在是否处于已配置状态:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - testzone configured /zones/testzone solaris excl
区域配置完成后,现在需要安装它,如清单 2 所示。
特别要注意,Oracle Solaris 11 中的 Oracle Solaris 区域要使用 IPS 特性来创建。您需要确保有权访问 IPS 信息库。在本例中,我们有权通过网络访问 IPS 信息库。有关 IPS 的更多信息,请参见 Oracle Solaris 11 映像包管理系统 (IPS) 基础知识简介。
清单 2:安装区域root@global:~# zoneadm -z testzone install A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111016T114436Z.testzone.install Image: Preparing at /zones/testzone/root. Install Log: /system/volatile/install.6677/install_log AI Manifest: /tmp/manifest.xml.zVaybn SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: testzone Installation: Starting ... Creating IPS image Installing packages from: solaris origin: http://pkg.oracle.com/solaris/release/ DOWNLOAD PKGS FILES XFER (MB) Completed 167/167 32062/32062 175.8/175.8 PHASE ACTIONS Install Phase 44311/44311 PHASE ITEMS Package State Update Phase 167/167 Image State Update Phase 2/2 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 110.519 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /zones/testzone/root/var/log/zones/zoneadm.20111016T114436Z.testzone.install
区域只用了 110 秒即完成安装。与其他虚拟化技术相比速度相当快,这反映了 Oracle Solaris 区域的轻量级本质。
可以使用 zoneadm
命令检查我们安装的区域的状态:
root@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - testzone installed /zones/testzone solaris excl
zonepath 必须位于 ZFS 数据集上,在安装区域时自动创建。可以使用 zfs
命令对此进行检查,如清单 3 所示。
root@global:~# zfs list | grep zones rpool/zones 368M 844G 32K /zones rpool/zones/testzone 368M 844G 32K /zones/testzone rpool/zones/testzone/rpool 368M 844G 31K /rpool rpool/zones/testzone/rpool/ROOT 368M 844G 31K legacy rpool/zones/testzone/rpool/ROOT/solaris 367M 844G 310M /zones/testzone/root rpool/zones/testzone/rpool/ROOT/solaris/var 57.3M 844G 56.4M /zones/testzone/root/var rpool/zones/testzone/rpool/export 62K 844G 31K /export rpool/zones/testzone/rpool/export/home 31K 844G 31K /export/home
可以看到,已经自动为您创建了 /zones
和 /zones/testzone
数据集。将 Oracle Solaris 区域置于 ZFS 数据集上可以实现克隆和快照等功能,并使 Oracle Solaris 区域能充分利用 ZFS。
注:testzone
的大小只有 368 MB。Oracle Solaris 区域占用空间很小,这反映了 Oracle Solaris 区域是一种非常轻量级的虚拟化技术。
启动和运行 testzone
的最后一步是引导它并设置系统配置。
运行以下命令引导该区域,然后访问其控制台:
root@global:~# zoneadm -z testzone boot; zlogin -C testzone
注:zlogin
的 -C
选项允许我们访问区域控制台,即它将我们带入区域并允许我们在区域内工作。
因为没有可用的系统配置文件,所以启动了 System Configuration Tool,如图 3 所示。
图 3. System Configuration Tool
输入 testzone
作为计算机名称,如图 4 所示,高亮显示 Manually 手动配置网络,然后按 F2 继续。
注:在本示例中,我们未选择“Automatically”,但如果您选择了它,则根本不必输入任何网络信息,因为该工具会替您完成配置。
图 4. 选择手动配置
为网络输入适当的网络设置,如图 5 所示,然后按 F2。
图 5. 输入网络设置
此时不配置 DNS(参见图 6),因此按 F2。
图 6. 选择不配置 DNS
此时不设置名称服务,因此按 F2。
图 7. 选择不设置名称服务
选择适合您所在位置的时区区域,如图 8 所示,然后按 F2。
图 8. 选择时区区域
选择相应的位置,如图 9 所示,然后按 F2。
图 9. 选择位置
选择相应的时区,如图 10 所示,然后按 F2。
图 10. 选择时区
输入 root 口令、您的姓名、用户名和用户口令完成配置,如图 11 所示。然后按 F2。
图 11. 完成配置
验证所选配置是否正确,然后按 F2 应用这些设置。
图 12. 验证配置
区域将继续引导,很快您就会看到控制台登录,如清单 4 所示。
清单 4:区域引导过程的输出[ system/system-log:default starting (system log) ] [ system/auditd:default starting (Solaris audit daemon) ] [ network/smtp:sendmail starting (sendmail SMTP mail transfer agent) ] [ network/sendmail-client:default starting (sendmail SMTP client queue runner) ] Oct 16 13:13:15 testzone sendmail[8911]: My unqualified host name (testzone) unknown; sleeping for retry Oct 16 13:13:15 testzone sendmail[8913]: My unqualified host name (testzone) unknown; sleeping for retry [ system/console-login:default starting (Console login) ] testzone console login:
区域现在已准备好,您可以登录了。在本示例中,现在使用“~.
”转义序列退出控制台。
通过使用 zoneadm
命令可以检查该区域是否已经引导并运行:
root@global:~# zoneadm list -v ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl
与希望的一样,当区域引导时,自动为我们创建了 VNIC。可以使用 dladm
命令对此进行检查:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown -- testzone/net0 vnic 1500 up e1000g0
可以看到,VNIC 列出为 testzone/net0
。
最后一步是登录您的区域去看看。可以从全局区域使用 zlogin
命令来实现,如清单 5 所示。
root@global:~# zlogin testzone [Connected to zone 'testzone' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@testzone:~# uname -a SunOS testzone 5.11 11.0 i86pc i386 i86pc root@testzone:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 10.134.79.241/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe6f:9645/10 root@testzone:~# dladm show-link LINK CLASS MTU STATE OVER net0 vnic 1500 up ? root@testzone:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 400M 843G 31K /rpool rpool/ROOT 400M 843G 31K legacy rpool/ROOT/solaris 400M 843G 341M / rpool/ROOT/solaris/var 58.1M 843G 57.1M /var rpool/export 96.5K 843G 32K /export rpool/export/home 64.5K 843G 32K /export/home rpool/export/home/fred 32.5K 843G 32.5K /export/home/fred root@testzone:~# exit logout [Connection to zone 'testzone' pts/3 closed]
注:我们未使用 zlogin
命令的 -C
选项,这意味着未通过区域的控制台访问它。这样我们就可以在结束时直接退出 shell 离开区域。
我们来看看有什么发现:
uname
命令显示我们运行在 Oracle Solaris 11 上。ipadm
命令显示 testzone
的 IP 地址。一共有四项:两个环回设备(IPv4 和 IPv6)、IP 地址为 10.134.79.241 的 IPv4 net0
设备,最后是一个 IPv6 net0
设备。dladm
命令显示自动创建的 net0
VNIC。zfs list
命令显示我们的 ZFS 数据集。注:从 testzone
内部看不到有关全局区域的任何信息。只能看到我们自己区域的属性。
现在验证了 testzone
已启动并正在运行。您可以将用户登录和口令提供给开发团队的管理员,让管理员就像是一个系统一样完成团队区域的设置。
Oracle Solaris 11 中新增了一项功能:现在默认情况下将使用专用 IP 网络资源自动创建 Oracle Solaris 区域。这意味着 Oracle Solaris 区域有权访问整个网络体系,从而允许区域管理员执行设置自己的 IP 地址和路由等操作。
使用 zonecfg
命令利用默认模板创建 testzone
(在第 1 步:配置 Oracle Solaris 区域中)时,区域配置中将自动包括一个具有以下属性的名为 anet
的网络资源:
linkname
为 net0
lower-link
为 auto
mac-address
为 random
link-protection
为 mac-nospoof
可以使用 zonecfg
命令查看这些内容,如清单 6 所示。
root@global:~# zonecfg -z testzone info zonename: testzone zonepath: /zones/testzone brand: solaris autoboot: true bootargs: -m verbose file-mac-profile: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: anet: linkname: net0 lower-link: auto allowed-address not specified configure-allowed-address: true defrouter not specified allowed-dhcp-cids not specified link-protection: mac-nospoof mac-address: random mac-prefix not specified mac-slot not specified vlan-id not specified priority not specified rxrings not specified txrings not specified mtu not specified maxbw not specified rxfanout not specified
可以看到,anet
网络设备已自动配置。如前所述,该资源分别在区域引导和关闭时自动创建和删除。这可以按下面的办法来查看。
首先,检查全局区域的 IP 地址:
root@global:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 e1000g0/_a static ok 10.134.79.168/24 lo0/v6 static ok ::1/128
使用 dladm
查看数据链路状态:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- e1000g1 phys 1500 unknown -- testzone/net0 vnic 1500 up e1000g0
注意是如何为 testzone
自动创建了一个连接到 e1000g0
的 VNIC (testzone/net0
)。
登录到 testzone
,检查链路状态和 IP 地址,然后 ping 全局区域,如清单 7 所示。
root@testzone:~# zlogin testzone root@testzone:~# dladm show-link LINK CLASS MTU STATE OVER net0 vnic 1500 up ? root@testzone:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 10.134.79.241/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fec4:32bb/10 root@testzone:~# ping 10.134.79.168 10.134.79.168 is alive root@testzone:~# exit logout [Connection to zone 'testzone' pts/3 closed]
webzone-1
并添加应用程序现在创建第二个区域 webzone-1
(用于面向 Web 的应用程序)并向其添加一个应用程序。
webzone-1
同样先使用 zonecfg
创建 webzone-1
。不过,这次为了演示建立区域是多么迅速和方便,我们将只提供所需的最基本信息 zonepath:
root@global:~# zonecfg -z webzone-1 "create ; set zonepath=/zones/webzone-1"
可以使用 zonecfg
命令查看区域配置,如清单 8 所示。
root@global:~# zonecfg -z webzone-1 info zonename: webzone-1 zonepath: /zones/webzone-1 brand: solaris autoboot: false bootargs: file-mac-profile: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: anet: linkname: net0 lower-link: auto allowed-address not specified configure-allowed-address: true defrouter not specified allowed-dhcp-cids not specified link-protection: mac-nospoof mac-address: random mac-prefix not specified mac-slot not specified vlan-id not specified priority not specified rxrings not specified txrings not specified mtu not specified maxbw not specified rxfanout not specified
就是这样。就配置而言,任务已经完成。
webzone-1
接下来安装该区域,如清单 9 所示。
清单 9:安装区域root@global:~# zoneadm -z webzone-1 install A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111016T143052Z.webzone-1.install Image: Preparing at /zones/webzone-1/root. Install Log: /system/volatile/install.10393/install_log AI Manifest: /tmp/manifest.xml.Iza4ru SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: webzone-1 Installation: Starting ... Creating IPS image Installing packages from: solaris origin: http://pkg.oracle.com/solaris/release/ DOWNLOAD PKGS FILES XFER (MB) Completed 167/167 32062/32062 175.8/175.8 PHASE ACTIONS Install Phase 44311/44311 PHASE ITEMS Package State Update Phase 167/167 Image State Update Phase 2/2 Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/manual done. Done: Installation completed in 108.257 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /zones/webzone-1/root/var/log/zones/zoneadm.20111016T143052Z.webzone-1.install
webzone-1
引导 webzone-1
,登录到控制台,除了 IP 地址之外,输入与前面针对 testzone
一样的设置。将 IP 地址设置为 10.134.79.242。
root@global:~# zoneadm -z webzone-1 boot; zlogin -C webzone-1
如果您对步骤不清楚,可以参考前面的第 3 步:引导和完成系统配置。最后,记得使用“~.
”转义序列退出控制台。
webzone-1
添加应用程序现在,已有一个运行的区域连接到网络,下面需要在该区域中放置一个应用程序。在本例中,因为这将是服务于 Web 内容的区域,我们来添加 Apache Web 服务器。
从全局区域登录 webzone-1
并检查 Apache Web 服务器程序包的状态:
root@global:~# zlogin webzone-1 [Connected to zone 'webzone-1' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@webzone-1:~# pkg info /web/server/apache-22 pkg: info: no packages matching the following patterns you specified are installed on the system. Try specifying -r to query remotely: /web/server/apache-22
该程序包未安装。我们使用 -r
选项远程查询 IPS 信息库来核实一下,如清单 10 所示。
root@webzone-1:~# pkg info -r /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Not installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Z
状态显示为 Not installed
。因此我们在区域中安装 Apache Web 服务器,如清单 11 所示
root@webzone-1:~# pkg install /web/server/apache-22 Packages to install: 3 Create boot environment: No Create backup boot environment: No Services to change: 1 DOWNLOAD PKGS FILES XFER (MB) Completed 3/3 636/636 4.2/4.2 PHASE ACTIONS Install Phase 800/800 PHASE ITEMS Package State Update Phase 3/3 Image State Update Phase 2/2
我们看到,IPS 下载了需要的所有相关文件。无需弄清依赖项。在本例中,安装了三个程序包。可以再次使用 pkg info
命令检查 Apache Web 服务器的状态,如清单 12 所示。
root@webzone-1:~# pkg info /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Z
这次状态显示为 Installed
。祝贺您;您已向区域添加了第一个程序包。
webzone-2
现在来创建最后一个区域 webzone-2
。只需重复创建其他区域所使用的过程即可,但在本例中,我们只是需要一个与 webzone-1
一样的另一个 Web 服务器环境。因此,不必重复配置过程,我们来克隆一个 webzone-1
。实际上,我们使用 webzone-1
作为区域创建的全局母版。
为避免不得不手动配置克隆区域的系统属性,我们首先为 webzone-2
创建一个系统 ID 模板。这可以通过从 webzone-1
内使用 sysconfig
工具来实现:
root@global:~# zlogin webzone-1 root@webzone-1:~# sysconfig create-profile -o /root/webzone-2-template.xml
注:使用 sysconfig
工具创建配置文件时,请确保在输出文件名中使用 .xml
扩展名。
完成为 webzone-2
输入正确信息(记住这次使用 10.134.79.243 作为 IP 地址)的所有屏幕。如在第 3 步:引导和完成系统配置部分中一样,完成配置时您将看到已经创建配置文件。最后,退出并返回全局区域。
Exiting System Configuration Tool. Log is available at: /var/tmp/install/sysconfig.log root@webzone-1:~# ls webzone-2-template.xml root@webzone-1:~# exit logout [Connection to zone 'webzone-1' pts/2 closed]
注:使用 sysconfig
工具时,不允许在用户帐户部分使用任何现有用户名。在本例中,不能使用用户名 fred
,因此选择了 jack
。
在稍后的步骤中,我们会将此文件复制到一个更方便的位置。
首先,需要从系统的全局区域停止要克隆的区域 webzone-1
。(不能克隆正在运行的区域。)使用 zoneadm list
验证该区域是否关闭,如清单 3 所示。
root@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl 3 webzone-1 running /zones/webzone-1 solaris excl root@global:~# zoneadm -z webzone-1 shutdown root@global:~# zoneadm list -iv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 testzone running /zones/testzone solaris excl - webzone-1 installed /zones/webzone-1 solaris excl
现在来捕获 webzone-1 区域的配置并将其用作要创建的其他区域(在本例中为 webzone-2
)的主配置文件模板:
root@global:~# zonecfg -z webzone-1 export -f /zones/webzone-2-profile
使用您最喜爱的编辑器,使该文件看上去如清单 14 所示。(您始终需要更新 zonepath,但我们已经选择更新 autoboot
。)
root@global:~# cat /zones/webzone-2-profile create -b set zonepath=/zones/webzone-2 set brand=solaris set autoboot=true set ip-type=exclusive add anet set linkname=net0 set lower-link=auto set configure-allowed-address=false set link-protection=mac-nospoof set mac-address=random set auto-mac-address=2:8:20:f1:e4:b7 end
现在我们要将前面创建的系统配置模板 (webzone-2-template.xml
) 放到一个更方便的位置。幸运地是,在区域关闭时仍可访问它的文件系统。
root@global:~# pwd /root root@global:~# cp /zones/webzone-1/root/root/webzone-2-template.xml /zones root@global:~# ls /zones/webzone-2-template.xml /zones/webzone-2-template.xml
webzone-1
创建 webzone-2
下一步使用修改的配置创建 webzone-2
(使用 zonecfg
),然后执行 webzone-1
的克隆(使用 zoneadm
)。记住向系统配置模板添加完整路径。请注意克隆完成的速度是多么快。(这可以通过将 time
命令附加到 zonecfg clone
命令来查看。)
root@global:~# zonecfg -z webzone-2 -f /zones/webzone-2-profile root@global:/zones# time zoneadm -z webzone-2 clone -c /zones/webzone-2-template.xml webzone-1 A ZFS file system has been created for this zone. Progress being logged to /var/log/zones/zoneadm.20111029T193536Z.webzone-2.clone Log saved in non-global zone as /zones/webzone-2/root/var/log/zones/zoneadm.20111029T193536Z.webzone-2.clone real 0m13.269s user 0m1.740s sys 0m2.716s
克隆 webzone-1
只用了 13 秒。此外,因为使用 clone
命令,我们利用了 ZFS 快照。我们来检查一下 webzone-1
和 webzone-2
占用的磁盘空间,如清单 15 所示。
root@global:/zones# zfs list | grep webzone rpool/zones/webzone-1 470M 843G 33K /zones/webzone-1 rpool/zones/webzone-1/rpool 470M 843G 31K /rpool rpool/zones/webzone-1/rpool/ROOT 470M 843G 31K legacy rpool/zones/webzone-1/rpool/ROOT/solaris 470M 843G 366M /zones/webzone-1/root rpool/zones/webzone-1/rpool/ROOT/solaris/var 97.8M 843G 57.9M /zones/webzone-1/root/var rpool/zones/webzone-1/rpool/export 96.5K 843G 32K /export rpool/zones/webzone-1/rpool/export/home 64.5K 843G 32K /export/home rpool/zones/webzone-1/rpool/export/home/fred 32.5K 843G 32.5K /export/home/fred rpool/zones/webzone-2 350K 843G 34K /zones/webzone-2 rpool/zones/webzone-2/rpool 316K 843G 31K /rpool rpool/zones/webzone-2/rpool/ROOT 295K 843G 31K legacy rpool/zones/webzone-2/rpool/ROOT/solaris-0 294K 843G 366M /zones/webzone-2/root rpool/zones/webzone-2/rpool/ROOT/solaris-0/var 39K 843G 57.9M /zones/webzone-2/root/var rpool/zones/webzone-2/rpool/export 3K 843G 32K /export rpool/zones/webzone-2/rpool/export/home 2K 843G 32K /export/home rpool/zones/webzone-2/rpool/export/home/fred 1K 843G 32.5K /export/home/fred
即使在添加 Apache Web 服务器之后,webzone-1
也只有 470 M。webzone-1
的精确副本 webzone-2
的情况更好,它只有 350 K,大大节省了磁盘空间。
最后,引导 webzone-2
并观察控制台。有时,您将看到正在应用的系统配置。从下面可以看到,已经从模板为我们设置了主机名。
root@global:~# zoneadm -z webzone-2 boot; zlogin -C webzone-2 [Connected to zone 'webzone-2' console] Hostname: unknown Unconfiguration failed for svc:/system/config-user:default Hostname: webzone-2 webzone-2 console login: ~. [Connection to zone 'webzone-2' console closed]
记得使用“~.”转义序列退出控制台。
注意,现在已有一个用于 webzone-2
的 .xml
模板。我们可以非常轻松地复制和编辑此模板,使得我们可以同样快速地部署全套其他 Web 区域。
现在登录 webzone-2
并查找 Apache Web 服务器程序包,如清单 16 所示。
root@global:~# zlogin webzone-2 [Connected to zone 'webzone-2' pts/3] Oracle Corporation SunOS 5.11 11.0 November 2011 root@webzone-2:~# pkg info /web/server/apache-22 Name: web/server/apache-22 Summary: Apache Web Server V2.2 Description: The Apache HTTP Server Version 2.2 Category: Web Services/Application and Web Servers State: Installed Publisher: solaris Version: 2.2.20 Build Release: 5.11 Branch: 0.175.0.0.0.1.530 Packaging Date: Wed Oct 12 14:13:31 2011 Size: 9.24 MB FMRI: pkg://solaris/web/server/apache-22@2.2.20,5.11-0.175.0.0.0.1.530:20111012T141331Z
可以看到,与前面不同,当从头开始创建区域时,必须添加到 webzone-1
的 Apache Web 服务器程序包已经存在。当已创建了具有所有其他程序包和配置的“主”区域时,常常使用此克隆方法。然后当需要新的类似环境时,只需克隆主区域。
还可以检查 IP 地址是否已正确应用:
root@webzone-2:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static duplicate 10.134.79.243/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe7a:7b0f/10
注:Oracle Solaris 自动安装程序还提供了一种方法,即作为系统安装服务的一部分创建准备好的区域。
在本文中,我们了解了如何创建、安装、引导和配置 Oracle Solaris 区域。还了解了如何自动创建 ZFS 数据集以及如何自动为您设置网络。最后,了解了如何使用 IPS 将应用程序添加到 Oracle Solaris 区域然后克隆该区域。
下面是其他一些资源:
sysconfig
命令配置 Oracle Solaris 11”修订版 1.0,2011 年 11 月 3 日 |